//
//  YWDownloadManager3.h
//  videoTest3
//
//  Created by jun peng on 2022/8/15.
//

#import <Foundation/Foundation.h>
#import "YWDownloadStatus3.h"
#import "YWSectionGroupStatus.h"
#import "Single.h"

NS_ASSUME_NONNULL_BEGIN

@interface YWDownloadManager3 : NSObject

//单例
SingleH(downloadManager)

//1、app一进来就要调用开启任务了、获取数据库只有一次机会、就在这里
//2、在退出app之前的模型是怎么样就归位怎么样、包括正在任务中和完成任务的、就算一个任务也没有全新的也有初始化字典数组group数组等东西
-(void)beginDataTask;

//在下载页VC的viewDidload调用、group有变化都会返回block、下载页VC只需要引用这个回传的group后直接刷新
-(void)getDataTaskArray:(void(^)(NSArray *group))groupArrayBlock;

//创建了一个任务
-(void)createOneDataTaskWithStatus:(YWDownloadStatus3 *)status;

//继续一个任务 (包含按暂停和下载失败按钮)
-(void)continueOneDataTaskWithStatus:(YWDownloadStatus3 *)status;

//从等待中优先播放一个任务
-(void)advanceOneDataTaskWithStatus:(YWDownloadStatus3 *)status;

//暂停一个任务
-(void)pauseOneDataTaskWithStatus:(YWDownloadStatus3 *)status;

//删除了一个正在中的任务
-(void)removeOneDownloadingDataTaskWithStatus:(YWDownloadStatus3 *)status;

//删除了一个完成了的任务
-(void)removeOneFinishDataTaskWithStatus:(YWDownloadStatus3 *)status;

//判断这个模型存不存在数据库（看完成下载和正在下载的数据库都不存在就开启下载）
+(void)judgeStatusExistInDataBase:(NSString *)videoUrl ifNoExist:(void(^)(void))ifNoExist;

//判断这个模型存不存在数据库2（看完成下载的数据哭假如存在就播放本地的，否则播放本地的）
+(void)judgeStatusExistInFinishDataBase:(NSString *)videoUrl ifExist:(void(^)(YWDownloadStatus3 *))existStatusBlock ifNoExist:(void(^)(void))ifNoExist;

//获取正在任务中的数量有多少个
-(NSInteger)getDownloadingTaskCount;





@end

NS_ASSUME_NONNULL_END
